/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.setup.trac.controller.validator;

import com.setup.trac.pojo.Utenti;
import com.setup.trac.pojo.wrappers.UtentiView;
import com.setup.trac.service.SearchService;
import com.setup.trac.web.form.TicketForm;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.servlet.http.HttpServletRequest;

import org.springframework.util.StringUtils;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

/**
 *
 * @author edoardo
 */
public class ManageTicketValidator implements Validator {

    private SearchService searchService;

    public void checkValoreNumerico(String value, Errors errors, String field) {
        if (value != null && !"".equals(value)) {
            if (value.indexOf(".") != -1) {
                errors.rejectValue(field, "", "Per i decimali usare la virgola");
            }
        }
    }
    public void checkIdUtenteAssegnatario(String value, Errors errors, String field) {
        if (value == null || "-1".equals(value)) {
                errors.rejectValue(field, "", "Inserire a chi e' assegnato il ticket");
        }
    }

    public void checkValore(String value, Errors errors, String field) {
        if (value != null && !"".equals(value)) {
            if (value.endsWith(",")) {
                errors.rejectValue(field, "", "Valore non valido");
            }
        }
    }

    public boolean supports(Class<?> clazz) {

        return clazz.isAssignableFrom(TicketForm.class);

    }

    public void validate(Object target, Errors errors) {
        TicketForm tf = (TicketForm) target;
        Utenti utenteLoggato = searchService.findUtenteById(tf.getIdUtente());
        if (utenteLoggato.getProfilo().getDescrizione().equals("USER")) {
            ValidationUtils.rejectIfEmpty(errors, "titoloTicket", "", "Campo obbligatorio");
            ValidationUtils.rejectIfEmpty(errors, "descrizione", "", "Campo obbligatorio");
        } else {
            ValidationUtils.rejectIfEmpty(errors, "prossimaAzione", "", "Campo obbligatorio");
//            checkIdUtenteAssegnatario(tf.getIdUtenteAssegnato(), errors, "idUtenteAssegnato");
            checkValoreNumerico(tf.getGiorniConsuntivati(), errors, "giorniConsuntivati");
            checkValoreNumerico(tf.getGiorniPrevisti(), errors, "giorniPrevisti");
            checkValoreNumerico(tf.getOreConsuntivate(), errors, "oreConsuntivate");
            checkValoreNumerico(tf.getOrePreviste(), errors, "orePreviste");
            if (!errors.hasErrors()) {
                checkValoreNumerico(tf.getGiorniConsuntivati(), errors, "giorniConsuntivati");
                checkValoreNumerico(tf.getGiorniPrevisti(), errors, "giorniPrevisti");
                checkValoreNumerico(tf.getOreConsuntivate(), errors, "oreConsuntivate");
                checkValoreNumerico(tf.getOrePreviste(), errors, "orePreviste");
            }


        }
        

    }
    
    public void validateRequestParams(HttpServletRequest request,Errors errors,Object command){
    	String idProgetto = request.getParameter("idProgetto");
    	if("".equals(idProgetto) || "-1".equals(idProgetto)){
    		errors.rejectValue("idProgetto", "","Selezionare il progetto");
    	}
    }

    public SearchService getSearchService() {
        return searchService;
    }

    public void setSearchService(SearchService searchService) {
        this.searchService = searchService;
    }
}
